package com.indusfo.spc.pda.mapper;

import com.indusfo.spc.pda.pojo.DosingDto;
import com.indusfo.spc.pda.pojo.StationDosing;
import com.indusfo.spc.pda.pojo.StationDosingDto;
import com.indusfo.spc.pojo.Dosing;
import com.indusfo.spc.pojo.User;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface StationDosingMapper {
    int deleteByPrimaryKey(Integer stationDosingId);

    /**
     * 新增
     * @param record
     * @return
     */
    int insert(StationDosing record);

    int insertSelective(StationDosing record);

    StationDosing selectByPrimaryKey(Integer stationDosingId);

    int updateByPrimaryKeySelective(StationDosing record);

    int updateByPrimaryKey(StationDosing record);

    /**
     * 查询工位叫料信息
     * @param stationDosing
     * @return
     */
    List<StationDosingDto> queryStationDosingList(StationDosing stationDosing);

    /**
     * 计数叫料信息
     * @param stationDosing
     * @return
     */
    int countStationDosingList(StationDosing stationDosing);

    /**
     * 更新工位叫料信息
     * @param stationDosing
     * @return
     */
    int updateStationDosing(StationDosing stationDosing);

    /**
     * 更新叫料配送状态
     * @param stationDosingId
     * @return
     */
    int updateDosingState(@Param("stationDosingId") Integer stationDosingId);

    /**
     * 更新叫料配送状态及配送人
     * @param stationDosing
     * @return
     */
    int updateDosingStateAndUser(StationDosing stationDosing);

    /**
     * 判断当前配送状态
     * @param stationDosingId
     * @return
     */
    StationDosing queryDosingState(@Param("stationDosingId") Integer stationDosingId);

    /**
     * 查询叫料信息
     * @param dosing
     * @return
     */
    List<DosingDto> queryDosingList(Dosing dosing);

    /**
     * 计数叫料信息
     * @param dosing
     * @return
     */
    int countDosingList(Dosing dosing);


    int insertStationDosingList(@Param("stationDosingList") List<StationDosing> stationDosingList);


    int updateStationDosingList(@Param("updateStationDosingList") List<StationDosing> updateStationDosingList);

    List<StationDosing> clientQueryStationDosingList(StationDosing stationDosing);
    int clientCountStationDosingList(StationDosing stationDosing);


    StationDosing queryStationDosing(StationDosing stationDosing);
    @MapKey("userCode")
    Map<String, User> queryUser();
}